package br.edu.unirn.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import br.edu.unirn.model.Hospede;

public class HospedeDAO extends GenericDAO<Hospede> {

	@Override
	public Class<Hospede> getClassType() {
		return Hospede.class;
	}

	public List<Hospede> findHospedeByIdadeMaior(int idade) {
		String jpql = "SELECT h FROM Hospede h WHERE h.idade > :idade";
		EntityManager em = getEntityManager();
		Query q = em.createQuery(jpql);
		q.setParameter("idade", idade);
		return q.getResultList();
	}

	public List<Hospede> findHospedeByIdadeBetweenMaxAndMin(int minimo, int maximo) {
		String jpql = "SELECT h FROM Hospede h WHERE h.idade BETWEEN :minimo AND :maximo";
		EntityManager em = getEntityManager();
		Query q = em.createQuery(jpql);
		q.setParameter("minimo", minimo);
		q.setParameter("maximo", maximo);
		return q.getResultList();
	}

	public List<Hospede> findHospedeByNomeAndIdade(String nome, int idade) {
		String jpql = "SELECT h FROM Hospede h WHERE h.nome LIKE :nome AND h.idade <> :idade";
		EntityManager em = getEntityManager();
		Query q = em.createQuery(jpql);
		q.setParameter("nome", nome + "%");
		q.setParameter("idade", idade);
		return q.getResultList();
	}

	public List<Hospede> findHospedeByEnderecoIsEmpty() {
		String jpql = "SELECT h FROM Hospede h WHERE h.endereco IS EMPTY";
		EntityManager em = getEntityManager();
		Query q = em.createQuery(jpql);
		return q.getResultList();
	}
}
